﻿Imports System.Data.SqlClient
Imports System.Text.RegularExpressions

Public Class clsCliente

    Private mCli_Id As Int32
    Private mNombre As String
    Private mApellido As String
    Private mDireccion As String
    Private mAltura As String
    Private mDepto As String
    Private mDni As String
    Private mTel As String
    Private mCuit As String
    Private mEmail As String
    Private mTipo As String
    Private mCod_Suc As Int32




    '/////////////////////////////////////////////////////////
    '/ Propiedades
    '/////////////////////////////////////////////////////////


    Public Property Cli_Id() As Int32
        Get
            Return mCli_Id
        End Get
        Set(ByVal value As Int32)
            If value > 0 And value < 2000000000 Then
                mCli_Id = value
            Else
                Throw New Exception("No se puede utilizar el código del cliente. el código debe ser mayor a cero (0).")
            End If
        End Set
    End Property

    Public Property Nombre() As String
        Get
            Return mNombre
        End Get
        Set(ByVal value As String)
            If value.Trim.Length > 0 And value.Trim.Length <= 40 Then
                mNombre = value.Trim.ToUpper
            Else
                Throw New Exception("No se puede utilizar el nombre del cliente.")
            End If
        End Set
    End Property
    Public Property Apellido() As String
        Get
            Return mApellido
        End Get
        Set(ByVal value As String)
            If value.Trim.Length > 0 And value.Trim.Length <= 40 Then
                mApellido = value.Trim.ToUpper
            Else
                Throw New Exception("No se puede utilizar el apellido del cliente.")
            End If
        End Set
    End Property

    Public Property Direccion() As String
        Get
            Return mDireccion
        End Get
        Set(ByVal value As String)
            If value.Trim.Length > 0 And value.Trim.Length <= 100 Then
                mDireccion = value.Trim.ToUpper
            Else
                Throw New Exception("No se puede utilizar la dirección del cliente.")
            End If
        End Set
    End Property
    Public Property Altura() As String
        Get
            Return mAltura
        End Get
        Set(ByVal value As String)
            If value.Trim.Length <= 6 Then
                mAltura = value.Trim.ToUpper
            Else
                Throw New Exception("No se puede utilizar la altura del domicilio. Nombre demasiado largo.")
            End If
        End Set
    End Property

    Public Property Depto() As String
        Get
            Return mDepto
        End Get
        Set(ByVal value As String)
            If value.Trim.Length <= 4 Then
                mDepto = value.Trim.ToUpper
            Else
                Throw New Exception("No se puede utilizar el departamento del domicilio. Nombre demasiado largo.")
            End If
        End Set
    End Property
    Public Property Dni() As String
        Get
            Return mDni
        End Get
        Set(ByVal value As String)
            If value.Trim.Length > 0 And value.Trim.Length <= 10 Then
                mDni = value.Trim.ToUpper
            Else
                Throw New Exception("No se puede utilizar el dni del cliente.")
            End If
        End Set
    End Property
    Public Property Tel() As String
        Get
            Return mTel
        End Get
        Set(ByVal value As String)
            If value.Trim.Length <= 12 Then
                mTel = value.Trim.ToUpper
            Else
                Throw New Exception("No se puede utilizar el teléfono del cliente. Nombre demasiado largo.")
            End If
        End Set
    End Property
    Public Property Cuit() As String
        Get
            Return mCuit
        End Get
        Set(ByVal value As String)
            If value.Trim.Length <= 12 Then
                mCuit = value.Trim.ToUpper
            Else
                Throw New Exception("No se puede utilizar el CUIT/CUIL del cliente.")
            End If
        End Set
    End Property
    Public Property Email() As String
        Get
            Return mEmail
        End Get
        Set(ByVal value As String)
            If value.Trim.Length <> 0 Then
                If value.Trim.Length <= 30 And validar_Mail(value.Trim) Then
                    mEmail = value.Trim.ToUpper
                Else
                    Throw New Exception("No se puede utilizar el mail del cliente. Nombre demasiado largo.")
                End If
            Else
                mEmail = value.Trim.ToUpper
            End If
        End Set
    End Property
    Public Property Tipo() As String
        Get
            Return mTipo.Trim.ToUpper
        End Get
        Set(ByVal value As String)
            If (value.Trim.ToUpper.Length = 1 And (value.Trim.ToUpper = "P" Or value.Trim.ToUpper = "E")) Then
                mTipo = value.Trim.ToUpper
            Else
                Throw New Exception("No se puede utilizar el tipo del cliente.")
            End If
        End Set
    End Property
    Public Property Cod_Suc() As Int32
        Get
            Return mCod_Suc
        End Get
        Set(ByVal value As Int32)
            If value > 0 And value < 2000000000 Then
                mCod_Suc = value
            Else
                Throw New Exception("Codigo de sucursal incorrecto")
            End If
        End Set
    End Property

    Public Function validar_Mail(ByVal sMail As String) As Boolean
        Return Regex.IsMatch(sMail, _
        "^([\w-]+\.)*?[\w-]+@[\w-]+\.([\w-]+\.)*?[\w]+$")
    End Function

    '/////////////////////////////////////////////////////////
    '/ Métodos de la Clase
    '/////////////////////////////////////////////////////////

    '---------------------------------------------------------------------
    ' Constructor de la Clase
    '---------------------------------------------------------------------
    Public Sub New()

        MyBase.New()

    End Sub
    '---------------------------------------------------------------------
    ' Destructor de la Clase
    '---------------------------------------------------------------------
    Public Sub Dispose()

        MyBase.Finalize()

    End Sub

End Class
